void inicia_nivel3()
{
   /* inicia mapa */
   nivel3.alpha=255;
   nivel3.load_map("mapas/nivel3/kmnivel3.mapa"); 
   nivel3.scrollcounty=-((64*63)-(6.5*64)); //-(64*63); posicion al iniciar el nivel3.
   //nivel3.scrollcounty=-400.0; //fin del nivel3.
   /* crea las bladosas */
   crea_puentes(3);
   /* cuidado al cargar datos que no este hechos */

   /* enemigo final de fase */   
   bosszone=false;
   //muerteestado=0;                                                            // estado del jefe
   /* crea enemigos */
   crea_clouds();  
   crea_evils();
   crea_fuegos();
   /* para intro */
   is_game_stop=true; 
   Tstop.set_time(10);                                                          // tiempo que dura la intro
   is_intro=true;                                                              // muestra la introduccion al nivel
   popolon.x=300;                                                               // posicion de popolon
   popolon.y=220;                                                               // siempre que se inicie la intro.
   estado = 3;                                                                  // fija el nivel actual
   arma=0;                                                                      // reiniciamos arma (no en original)
   nivel3.ready=true;
   teclado.paused=false; 
   //nivel3.test_tiles=true;                                                    // modo prueba de tiles
   //nivel3.poke (458,1,0); // pokea en la capa 1 el dato 0 -- > seactiva colision??
   //nivel3.poke (458,0,4); // pokea en la capa 0 el dato 4
   for (int i=0;i<3;i++) gunshots[i].activo=false;
} 

void finaliza_nivel3()
{  
    /* mapa */
    nivel3.ready=false;                                                         // desactiva el mapa    
    nivel3.fin();        
}   

void run_nivel3()
{
     
     if (is_intro==true)                                                        // muestra el nivel y comienza //
      {
        Tstop.countdown();
        if (Tstop.count==0) 
        { 
            is_game_stop=false; 
            is_intro=false;
            mus.play();                                                         // toca la musica del juego.
        }
        nintendo.escala=0.9;
        if (Tstop.count%2!=0) nintendo.escribe(260,200,"STAGE 3",15);           // Para hacerlo intermintente
        pinta_marcador();
        return; 
      }                             
    
     nivel3.pintatiles();
    
   
    
    /*  hardware scroll
    if (is_game_stop==false) {
        ay-=0.8;   
            glMatrixMode (GL_PROJECTION);                                                // Modo matriz
         glLoadIdentity();
        glOrtho ( 0 , 640, 480+ay, ay , -1 , 1 );
    }  
    
    
     /* final del nivel */
     if (nivel3.scrollcounty==-300)                                             
     {
            mus.stop();                                                         // detiene la musica de fase
            finfase.play();                                                     // toca la musica de fin de fase.
            bosszone=true;                                                      // activa el modo boss zone
     }
     if (bosszone==true)
     {
        if (nivel3.scrollcounty==0) // && muerteestado==0) 
        {
            is_game_stop=true;                                                  // para el nivel.
            //muerteestado=1;                                                     // activa a medusa
            Tstop.set_time(360);                                                // Fija el tiempo de vida de medusa en 3minutos
        }
       /* if (muerteestado<2 && nivel3.evento_pausa==false ) pinta_muerte();      // si medusa esta viva LAPINTA
        if (muerteestado==1 && nivel3.evento_pausa==false ) 
        { 
            Tstop.countdown();                                                  // actualiza el timer
        }
        if (muerteestado==2)                                                       // si muere el jefe
         {
            if (popolon.x<(video.ancho/2)-32)  popolon.x++;
            if (popolon.x>(video.ancho/2)-32)  popolon.x--;
            if (popolon.x==(video.ancho/2)-32)  popolon.y--;
            if (popolon.y<64) 
            {
                finaliza_nivel2();                                              // borra todos los datos del nivel.
                estado=2;                                                       // fija el estado para el siguiente nivel    
                is_intro=true;                                                  // que comienze con la intro
            }        
         } */
     }      
     /* toca la musica del final de fase */

     if (is_game_stop && bosszone==false)                                                          // tile stop active           
      { 
        Tstop.countdown();
        char cadena[14];
        sprintf (cadena,"%d",Tstop.count);
        nintendo.escala=0.9;
        nintendo.usaalpha=false;                                                // set text alpha off
        nintendo.escribe(600,0,cadena,15);
        nintendo.usaalpha=true;
        nintendo.escala=0.6;                                                    // rest text scale.
        if (Tstop.count==0) is_game_stop=false; 
      }
     if (nivel3.evento_pausa==true)                                                   // if game is paused;
      {
        pinta_poppause();
        nintendo.escala=0.9;
        nintendo.usaalpha=false;                                                // set text alpha off
        nintendo.escribe(250,200,"PAUSED",15);
        nintendo.usaalpha=true;
        nintendo.escala=0.6;
        pinta_marcador();
        return; 
       }                                      
     else
       { 
        if (mus.paused==true) mus.play();
       // if (finfase.stopped==true) finfase.play();    algo falla aqui
       }
     if (is_game_stop==false) nivel3.autoscroll(scroll_speed,1,1); // velocidad, direccion , orientacion 0=hor, 1=vert
     pinta_ras();
	 /* pinta baldosas 
     pinta_torre(nivel3.scrollcounty);  
     pinta_trampas(nivel3.scrollcounty);  
     pinta_horses(nivel3.scrollcounty);
     pinta_reinas(nivel3.scrollcounty);
     pinta_kings(nivel3.scrollcounty); */
     pinta_puentes(nivel3.scrollcounty);

     //if (nivel3.scrollcounty==lv3_cloudspos[0]) prepara_clouds();
     //if (cloudss[0].count>0) 
     pinta_clouds(nivel3.scrollcounty); 
     
     pinta_evils(nivel3.scrollcounty);
     pinta_fuegos(nivel3.scrollcounty);

     /* pinta Weapon option 
     pinta_optionw(nivel3.scrollcounty);
     /* PINTA OPTION 
     pinta_option(nivel3.scrollcounty);
     /* shield paint */ 
     if (shield.visible==true) pinta_shield();                                         // paint only if sprite is visible. 
     /* maneja el sprite de popolon */
     pinta_popolon(nivel3.scrollcounty); 
     /* flechas */
     if (arma==0 || arma==1) arrows_move(nivel3.scrollcounty);
     /* fballs */
     if (arma==2 || arma==3) fballs_move(nivel3.scrollcounty);
     /* boomerang */
     if (arma==4 || arma==5) boomer_move(nivel3.scrollcounty);
     /* swords */
     if (arma==6 || arma==7) sword_move(nivel3.scrollcounty);
     /* flechas de fuego*/
     if (arma==8 || arma==9) farrows_move(nivel3.scrollcounty);
     /* bubles */
     //pinta_bubles(nivel3.scrollcounty,lv1_bublespos,26);
     //pinta_bugs(nivel3.scrollcounty,lv2_bugspos,26);
     //pinta_bones(nivel3.scrollcounty,lv2_bones,26);
     //pinta_meteors(nivel3.scrollcounty,lv2_meteorpos,26);
     /* guerreros */ 
     //pinta_knight(nivel3.scrollcounty,lv1_knightpos,18);
     /* murcielagos */
     //pinta_bats     (nivel3.scrollcounty,lv1_batpos,4);
     //pinta_bats_spl (nivel3.scrollcounty,lv1_batpos_spl,2);
     //pinta_bats_spr (nivel3.scrollcounty,lv1_batpos_spr,2);
     //pinta_bats_zz  (nivel3.scrollcounty,lv1_batpos_zz,6);
     /* disparos de los enemigos */
     pinta_shot(4);
     // flechas enemigas.
     pinta_sarrow(4);
     // bones // 
     pinta_sbone(4);
     // gushots //
     pinta_gunshots();
     /* marcador */
     pinta_marcador();
}

